package com.test.design.pattern.singleton.demo4;

/**
 * @ClasName Singleton
 * @Descripution TODO 懒汉式-方式2（线程安全）
 * @Author leikw
 * @Date 2021/11/1 8:42
 * @Version V1.0
 */
public class Singleton {

    private Singleton(){};

    private static Singleton singleton;

    public static synchronized Singleton getInstance(){

        if(singleton==null){
            singleton = new Singleton();
        }

        return singleton;
    }
}

//该方式也实现了懒加载效果，同时又解决了线程安全问题。但是在getInstance()方法上添加了
//synchronized关键字，导致该方法的执行效果特别低。从上面代码我们可以看出，其实就是在
//初始化instance的时候才会出现线程安全问题，一旦初始化完成就不存在了。
